/**
 * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
 * Licensed under the GNU Affero General Public License (AGPL).
 * See License.AGPL.txt in the project root for license information.
 */

// @ts-check

const fs = require("fs");
const path = require("path");
const child_process = require("child_process");
const qualifier = process.argv[2];

const rootDir = process.cwd();
const pckDir = path.join(rootDir, process.argv[3]);

if (process.env.DO_PUBLISH === "false") {
    console.warn("Skipping publishing per request.");
    process.exit(0);
}

if (process.env.NPM_AUTH_TOKEN) {
    fs.writeFileSync(
        path.join(pckDir, ".npmrc"),
        `//registry.npmjs.org/:_authToken=${process.env.NPM_AUTH_TOKEN}\n`,
        "utf-8",
    );
} else {
    console.warn("NPM_AUTH_TOKEN env variable is not set");
}

const pck = JSON.parse(fs.readFileSync(path.join(pckDir, "package.json"), "utf-8"));
pck.version = `${pck.version}-${qualifier}`;
fs.writeFileSync(path.join(pckDir, "package.json"), JSON.stringify(pck, undefined, 2), "utf-8");

const tag = qualifier.substr(0, qualifier.lastIndexOf("."));

child_process.execSync(
    [
        "yarn",
        "--cwd",
        pckDir,
        "publish",
        "--tag",
        tag,
        "--access",
        "public",
        "--ignore-scripts",
        "--network-timeout",
        "300000",
    ].join(" "),
    { stdio: "inherit" },
);
